﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kokomo.PeInspector.Reflection;
using Kokomo.Environment.Documents;

namespace Kokomo.PeInspector.Extensibility
{
	/// <summary>
	/// Provides functionality for extending a <see cref="DetailViewModel"/>.
	/// </summary>
	/// <remarks>
	/// By implementing this interface, an extension may extend a <see cref="DetailViewModel"/>
	/// by adding commands, summary information, or tab pages.
	/// </remarks>
	public interface IDetailViewModelExtender
	{
		/// <summary>
		/// Extends a <see cref="DetailViewModel"/>.
		/// </summary>
		/// <param name="viewmodel">The viewmodel to extend.</param>
		/// <param name="host">The host of the viewmodel.</param>
		/// <remarks>
		/// The implementation may add commands or details to <see cref="DetailViewModel.Summary"/>,
		/// or even <see cref="TabPageViewModel"/> if <paramref name="viewmodel"/>
		/// is a <see cref="TabbedDetailViewModel"/>.
		/// </remarks>
		void Extend(DetailViewModel viewmodel, IMetadataHost host);
	}
}
